1. Introduction The Object Plant gives you the opportunity to create three different kinds of descriptions of a software system. The notation is based upon the Object Modeling Technique (OMT) developed by Rumbaugh et al and UML (Unified Modelling Language) developed by Rumbaugh, Booch and Jacobson. This help text will only refer to OMT notation. This is not a complete description of the program, refer to the User's Manual for more information. 1.1 The Object Model "An object model captures the static structure of a system by showing the objects in the system, relation- ships between the objects, and the attributes and operations which characterize each class of objects." The Object Plant allows you to create Object Model diagrams, where you can model classes, interfaces, associations, generalizations and aggregations. The Object Model diagram can be split into several pages, each page representing a part of a system. The picture below shows an example of an Object Model diagram.   1.2 The Dynamic Model "The major dynamic modeling concepts are events, which represent external stimuli, and states, which represent values of objects" The Object Plant allows you to create Event Trace diagrams and State diagrams. Each of them can be divided into several pages much like the Object Model diagram. Substates will eventually be provided, but the current version does not support substates. The picture below shows an example of an Event Trace diagram.   A thread is normally an object in the software system. The boxes on a thread shows when the object is active. Events can either be function calls, queue messages or some other way of communication. 2. Object Model Diagram The Object Model Toolbox contains ten different tools:   2.1 Select Tool The select tool is used to select one or several of the items in an Object Model page. There are only two types of items in an Object Model page, class items and association items, where association items may be of the Aggregation, Association or Generalization type. To select one item click on the item. A selected item is marked by a set of small black squares positioned at the corners of the item. To select several items, one may either shift-click the items or framing a set of items by holding the mouse button down while stretching a select frame. The select tool is also used to move items. If you hold the mouse button down when selecting a class, the cursor will after will change to a move cursor   . You may then move the selected items freely. If you hold the mouse button down when selecting an association, the move cursor will appear only if the cursor is positioned above a black select square. If you then move the mouse, that point of the association will move. The select tool is used to created subsystems. This is done by doubleclicking on a class box while pressing the option-key. The top level class box will then be drawn with a dashed outline to indicate that it is a sub- system and not a real class. A new page for the subsystem will automatically be created and the page will have the name of the "parent-class". In the page palette, the name of subsystems will be indented relative its parent. 2.2 Class Tool The Class Tool is used to create class items in the Object Model. Not much to say about this tool... 2.3 Interface Tool The Interface Tool is used to create interface items in the Object Model. Interfaces are not supported in the OMT notation but Unified Modeling Language supports interfaces. 2.4 Supplier Tool The Supplier Tool is used to create an supplier association between a class and an interface (a class supplies an interface). When this tool is selected the cursor will change into the association cursor  . Position the cursor at a class, press and hold the button and stretch a line to the interface and then release the button. If you release the button outside any class item, no association will be created. 2.5 Association Tool The Association Tool is used to create an Association between two classes. When this tool is selected the cursor will change into the association cursor. Position the cursor at a class, press and hold the button and stretch a line to the other class and then release the button. If you want a selfreferencing association, press and release the button in the same class item. 2.6 Aggregation Tool The Aggregation Tool works almost the same as the Association Tool but with one difference. It is possible to create multibranch aggregations:   To make a multibranch aggregation, start creating an ordinary aggregation between two classes. Add a new branch by pushing the button on the aggregation, either any of the lines or in the small diamond. Then stretch it to a class item and release the button. 2.7 Generalization Tool The Generalization Tool works as the Aggregation Tool. Multibranch generalizations are possible. 2.8 Cut Tool The Cut Tool can be used to split an association line into two. Position the top of the knife cursor at the line where you want it to be splitted. 2.9 Note Tool You can place notes anywhere in the diagrams. In the current version, notes are not related to any particular part of a diagram, they are standalone, but in future releases they will be connected to some other item in a diagram. A note can, for example, include pseudo code to illustrate the implementation of a class operation.   A note can be resized by selecting it and draging in any of the corner squares. 2.10 Inspect Tool With this tool you can read the Description field of every item (class, association etc) without having to open a dialog window for the item. Just position the magnifying glass above the item you want to study and the description text will be presented in a "balloon-ish" frame.   2.11 Nested Object Models You can create nested models containing subsystems each of them described on a separate Object Model page. A class item can be turned into a subsystem by double-clicking on the class item with the select tool while pressing the option-key. A new page will then be opened which has the name of the class item. The name of the new page page cannot be changed, it will always have the same name as it original class. The original class item will be drawn with a dashedout line to indicate that it is a subsystem. If you try to delete such a class, a confirmation dialog will show up. If you confirm the deletion of the class, the nested page will also be deleted. In the page palette window, nested object model page names will be indented relative their parent names. 3. Event Trace The Event Trace Toolbox contains six different tools:   3.1 Select Tool The select tool in the Event Trace diagram works the same way as in the Object Model diagram. The only difference it that when you move items in the Event Trace diagram the move cursor may look different. When you move threads, you can only move them sideways why the move cursor looks like this   . When you're moving boxes, you may only move them up and down why the cursor looks like this   . You also use the select tool to change the size of threads and boxes. If you hit either end of a thread, the cursor will change to the resize cursor which looks like this   . You may then change the size of the threads. Note that all threads will change size. They always have the same height. To alter the size of a box, hit either end of the box and the cursor changes to the resize cursor. Then move the mouse to change the size of the box. 3.2 Thread Tool The Thread Tool is used to create thread items in the Event Trace diagram. Not much to say about this tool except that the height of a new thread is determined by the height of other threads in the diagram. All threads must always have equal heights. 3.3 Box Tool The Box Tool is used to create box items in the Event Trace. When you have selected this tool and moves the cursor over a thread, a hanging box will appear below the cursor. This indicates that you may create a box at the current position. 3.4 Event Tool The Event Tool is used to create an event between two boxes. When this tool is selected the cursor will change into the event cursor  . Position the cursor at a box, press and hold the button and stretch a line to the other box and then release the button. If you want a selfreferencing event, press and release the button in the same box item. If you release the button outside any box item, no event will be created. 3.5 Note & Inspect Tool Are exactly the same as the Object Model note and inspect tool. 4. State Diagrams The State Diagram Toolbox contains eight different tools.   4.1 Select Tool The select tool in the State Diagram works the same way as in the Object Model diagram. 4.2 Initial and Final State Tool These tools can be used to insert final and initial state symbols (bull's eye and filled circle). 4.3 Note & Inspect Tool Are exactly the same as the Object Model note and inspect tool. 5. The Menus The Object Plant has five fixed menus and two menus which appear now and then. The fixed menus are: File, Edit, View, Special and Windows. 5.1 File Menu When no document is open, the file menu looks like this:   The New, Open, Save, Save as, Close and Quit do not require any explanation, do they? When a document is open (note that a document may be open even though no windows are visible) the File menu looks like this:   The "Document Info..." item contains two submenys: "General..." and "Datatypes...". In the General item you can select the notation to be used with the document. The Datatypes item will bring up a dialog where you can specify the data types used in the document (project). You can create your own set of data types by adding and removing data types as you like. There is one standard C++ data type set included in the Object Plant package which can be loaded using the "Load set"-button. Here the "Export Page as..." item is used to export the current main window content in PICT or EPS format. Note that not all types of window may be exported, only the three main windows: Object Model, State Diagram and Event Trace windows. The "Generate code..." item is used to generate code as described by the currently selected template files (in the Code generation preferences dialog). The Print Page item will print the selected page in the currently active main window. 5.2 Edit Menu In this menu the Cut, Copy and Paste items are enabled and implemented for text fields. Copy and Paste are also enabled for certain items in the diagrams such as classes, states and threads. The Clear can also be used to delete parts in the Object Model, State Diagram and Event Trace diagram.   The Clear item can also be used to delete class attributes and operations. To do this, doubleclick on the class box so that the Class Dialog Window appears. Then select the attribute or operation to be deleted by clicking to the left of the attribute's (or operation's) name or description field. The attribute will then be selected and the "Clear" item of the Edit menu will be enabled. Event entries in state boxes can be deleted the same way as class attributes and operations. 5.3 View Menu The number of items in this menu depends upon the number of "View sets" that you have defined in the Special->Preferences->View... dialog (see below). 5.4 Special Menu This menu has five items: Info, Align, New Page, Delete Page and Preferences.   "Info" will be enabled when one or several items in the currently active main window are selected. Choosing "Info" will present a dialog window for each of the selected items. The same dialog window will appear when doubleclicking on an item. If you delete the last page in for example the Object Model, a new empty page will automatically be created since all models must have at least one page. The preferences item has three submenus named "General...", "View..." and "Code generation...". The last item is never enabled in the current version since the code generation part is not yet implemented. The "View..." item brings up a dialog that looks like this:   You can specify which information stored in the document that shall be displayed. Normally one wants less information at an early stage of the project e.g. during the analysis phase than during the implementation phase. To support different "views" of a project, you can define your own set of "views". For each view (called Set) you specify what to be displayed. There is always a default view which cannot be deleted.